const redis = require('redis');

const red = redis.createClient(['6379', '127.0.0.1'])

red.on('error', (err) => {
    console.log(`Redis Error:${err}`)
});

function redisGet (key) {
    return new Promise((resolve, reject) => {
      // redis 获取 键值，【错误，值】
      red.get(key, (error, value) => {
        
        // 报错
        if (error) {
            reject(error);
            return;
        }
  
        // 如果值为空
        if (value == null) {
          resolve(null);
          return;
        }
  
        try {
          // 如果是JSON字符串
            resolve(JSON.parse(value));
        } catch (e) { // 如果不是JSON字符串 直接就忽略错误
            resolve(value);
        }
      });
    });
  }

function redisSet (key, value, timeout = 60 * 60) {
    // 如果值是 对象
    if (typeof(value === 'object')) {
        value = JSON.stringify(value);
    }

    red.set(key, value);
    // 每个 key 的过期时间设置
    red.expire(key, timeout);
}

module.exports = {
    redisGet,
    redisSet
};